package it.polimi.authentication.web.beans.UTENTE;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import it.polimi.authentication.ejb.usermanagement.ListaEscursione;
import it.polimi.authentication.ejb.usermanagement.ListaHotel;
import it.polimi.authentication.ejb.usermanagement.ListaMezzo;
import it.polimi.authentication.ejb.usermanagement.PacchettoPredefinito;
import it.polimi.authentication.ejb.usermanagement.UserMgr;
import it.polimi.authentication.ejb.usermanagement.dto.EscursioneDTO;
import it.polimi.authentication.ejb.usermanagement.dto.HotelDTO;
import it.polimi.authentication.ejb.usermanagement.dto.MezzoDTO;
import it.polimi.authentication.ejb.usermanagement.dto.PacchettoEscursioneDTO;
import it.polimi.authentication.ejb.usermanagement.dto.PacchettoHotelDTO;
import it.polimi.authentication.ejb.usermanagement.dto.PacchettoMezzoDTO;
import it.polimi.authentication.ejb.usermanagement.dto.PacchettoPredefinitoDTO;
import it.polimi.authentication.ejb.usermanagement.dto.Pacchetto_cittaDTO;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.Temporal;

import org.primefaces.context.RequestContext;
import org.primefaces.model.DualListModel;

@ManagedBean (name="GiftGL")
@SessionScoped
public class RegalaGiftList {
	
	@EJB
	PacchettoPredefinito PacchettoManager;
	
	private int codiceGiftList;
	private PacchettoPredefinitoDTO pacchettoGiftList = new PacchettoPredefinitoDTO();
	private ArrayList<EscursioneDTO> listaEscursione = new ArrayList<EscursioneDTO>();
	private MezzoDTO mezzoAndata;
	private MezzoDTO mezzoRitorno;
	private HotelDTO hotelPacchetto;
	
	public int getCodiceGiftList() {
		return codiceGiftList;
	}

	public void setCodiceGiftList(int codiceGiftList) {
		this.codiceGiftList = codiceGiftList;
	} 
	
	public PacchettoPredefinitoDTO getPacchettoGiftList() {
		return pacchettoGiftList;
	}

	public void setPacchettoGiftList(PacchettoPredefinitoDTO pacchettoGiftList) {
		this.pacchettoGiftList = pacchettoGiftList;
	}
	
	public ArrayList<EscursioneDTO> getListaEscursione() {
		return listaEscursione;
	}

	public void setListaEscursione(ArrayList<EscursioneDTO> listaEscursione) {
		this.listaEscursione = listaEscursione;
	}

	public MezzoDTO getMezzoAndata() {
		return mezzoAndata;
	}

	public void setMezzoAndata(MezzoDTO mezzoAndata) {
		this.mezzoAndata = mezzoAndata;
	}

	public MezzoDTO getMezzoRitorno() {
		return mezzoRitorno;
	}

	public void setMezzoRitorno(MezzoDTO mezzoRitorno) {
		this.mezzoRitorno = mezzoRitorno;
	}

	public HotelDTO getHotelPacchetto() {
		return hotelPacchetto;
	}

	public void setHotelPacchetto(HotelDTO hotelPacchetto) {
		this.hotelPacchetto = hotelPacchetto;
	}

	public void cercaGiftList(){
		pacchettoGiftList=PacchettoManager.findGiftList(codiceGiftList);
		
		if (pacchettoGiftList.getId()==0){
			FacesContext context = FacesContext.getCurrentInstance();
			FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("GiftGL", null);
			context.addMessage(null, new FacesMessage("Errore!", "Non esiste una GiftList con quel codice"));
		}
		else
		{
			RequestContext context = RequestContext.getCurrentInstance();
			applicaPrezzi();
			retrievePartiPacchetto();
			context.update("regGL:infoDlg");
			context.execute("PF('infoDialog').show()");
		}
		
		
	}
	
	public String pagaSI()
	{
		PacchettoManager.pagaParti(pacchettoGiftList);
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("GiftGL", null);
		return "regalaGL?faces-redirect=true";
	}
	
	public String pagaNO()
	{
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("GiftGL", null);
		return "regalaGL?faces-redirect=true";
	}
	
	public void retrievePartiPacchetto(){
		
		hotelPacchetto = PacchettoManager.findEntityHotel(pacchettoGiftList.getId());
		mezzoAndata = PacchettoManager.findEntityMezzoAndata(pacchettoGiftList);
		mezzoRitorno = PacchettoManager.findEntityMezzoRitorno(pacchettoGiftList);
		listaEscursione = PacchettoManager.findEntityEscursione(pacchettoGiftList.getId());
		applicaPrezzi();
		
	}
	
	public void applicaPrezzi(){
		pacchettoGiftList = PacchettoManager.setPrezziDTO(pacchettoGiftList);
	}
		
}
